<?php
namespace App\DataBase;

/**
 * Class ArrayAccessTrait
 * @package App\DataBase
 *
 * @property $_rawData
 */
trait ArrayAccessTrait
{
    /**
     * 获取原始数据
     *
     * @return array
     */
    public function getRawData()
    {
        return $this->_rawData;
    }

    /**
     * ArrayAccess（数组式访问）接口 实现开始
     * @link http://php.net/manual/zh/class.arrayaccess.php
     */
    /**
     * 设置一个偏移位置的值
     *
     * @param mixed $key
     * @param mixed $value
     */
    public function offsetSet($key, $value)
    {
        $this->_rawData[$key] = $value;
    }

    /**
     * 获取一个偏移位置的值
     *
     * @param mixed $key
     * @return mixed
     */
    public function offsetGet($key)
    {
        if (isset($this->_rawData[$key])) {
            return $this->_rawData[$key];
        }
        return null;
    }

    /**
     * 复位一个偏移位置的值
     *
     * @param mixed $key
     */
    public function offsetUnset($key)
    {
        unset($this->_rawData[$key]);
    }

    /**
     * 检查一个偏移位置是否存在
     *
     * @param mixed $offset
     * @return bool
     */
    public function offsetExists($offset)
    {
        return isset($this->_rawData[$offset]);
    }

}